Migo商城2.0 业务逻辑中添加redis 缓存(1) 十九
分单机版和集群版,之前附件有说单机版了这里说下另外一种集群:
集群的搭建(伪分布式)
集群中至少有三个节点(选举模式),每个节点有一备份节点。需要6台服务器。
需要6个redis实例。需要每个实例运行在不同的端口号。
搭建步骤:
第一步:创建6个redis实例
第二步:修改redis的配置文件,修改端口号,开启集群。

第三步:启动每个redis实例。
第四步:创建集群,需要使用ruby脚本。需要安装ruby环境。
安装ruby
1  | yum install ruby  | 
安装ruby和redis的接口程序:
拷贝redis-3.0.0.gem至/usr/local下
执行:
1  | gem install /usr/local/redis-3.0.0.gem  | 
使用redis-trib.rb脚本创建集群。
第五步:执行创建集群命令:
1  | [root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006  | 
1  | [root@localhost redis-cluster]# redis01/redis-cli -p 7004 -c  | 
项目中导入jedis的依赖,因为各个系统都有可能加缓存,所以,代码实现放在common工程中,注意事项看代码中的解释
这里就涉及到了什么时候定义接口和实现,同一个接口可以有不一样的实现,这里是分为单机版和集群版两种实现,这就是所谓的面向接口
先定义一个接口
1  | package com.migo.service;  | 
单机版redis实现:
1  | package com.migo.service.impl;  | 
集群版redis实现:
1  | package com.migo.service.impl;  | 
抽取模板方法
单机版那里可以看到方法里有比较多的重复代码,这里就讲一下Spring对模板代码的抽取方法:
拿大家最熟悉的jdbctemplate为例:

第一步 任务逻辑接口(自己需要实现的逻辑):
WorkCallback 参考上图中的1,因参数未知类型,所以设置为E
1  | package com.migo.service;  | 
第二步 实现类中定义execute方法
返回类型依然是T 参考上图中2和3,参数就是第一步代码中定义的接口实现类
1  | private <T> T excute(WorkCallback<T,Jedis> workCallback){  | 
第三步,调用类中调用excute方法并实现相应接口任务逻辑
因为要传入的是类型,所以返回的long修改为装箱类Long
1  | package com.migo.service.impl;  | 
改造完毕,其实模板类方法的设计也不过如此
Spring和jedis的整合
migo-manage  web项目中的service配置文件:
1  | <beans xmlns="http://www.springframework.org/schema/beans"  |